package com.javaweb.web.service;

import java.util.List;

import com.javaweb.base.po.Interfaces;
import com.javaweb.base.po.User;
import com.javaweb.util.entity.Page;
import com.javaweb.web.eo.interfaces.ExcludeInfoResponse;
import com.javaweb.web.eo.interfaces.InterfacesListRequest;
import com.javaweb.web.eo.interfaces.InterfacesTestRequest;
import com.javaweb.web.eo.interfaces.UserRoleDataPermissionRequest;
import com.javaweb.web.eo.interfaces.UserRolePermissionRequest;

/**
 * 接口模块业务层接口
 * 
 * @author tank2140896
 */
public interface InterfacesService {
	
	/**
	 * 同步接口信息业务层接口
	 */
	void synchronizedInterfaces();
	
	/**
	 * 获取所有接口信息
	 * 
	 * @return List<Interfaces> 接口信息列表
	 */
	List<Interfaces> getAllInterfaces();
	
	/**
	 * 接口列表业务层接口
	 * 
	 * @param interfacesListRequest 接口列表请求参数
	 * @return Page 分页参数
	 */
	Page interfacesList(InterfacesListRequest interfacesListRequest);
	
	/**
	 * 接口详情业务层接口
	 * 
	 * @param interfacesId 接口ID
	 * @return Interfaces 接口信息
	 */
	Interfaces interfacesDetail(String interfacesId);
	
	/**
	 * 接口修改业务层接口
	 * 
	 * @param interfaces 接口修改请求参数
	 */
	void interfacesModify(Interfaces interfaces);
	
	/**
	 * 用户角色数据权限业务层接口
	 * 
	 * @param userRoleDataPermissionRequest 用户角色数据权限请求参数
	 * @return Page 分页参数
	 */
	Page userRoleDataPermission(UserRoleDataPermissionRequest userRoleDataPermissionRequest);
	
	/**
	 * 用户角色数据权限业务层接口
	 * 
	 * @param userRolePermissionResponse 用户角色数据权限请求参数
	 * @param interfacesId 接口ID
	 * @param user 用户信息
	 */
	void dataPermissionAssignment(UserRolePermissionRequest userRolePermissionResponse,String interfacesId,User user);
	
	/**
	 * 获取排除列表字段业务层接口
	 * 
	 * @param userId 用户ID
	 * @return List<ExcludeInfoResponse> 排除列表字段列表
	 */
	List<ExcludeInfoResponse> getExcludeInfoResponseList(String userId);
	
	/**
	 * 同步接口历史调用次数业务层接口
	 */
	void synchronizedRedisInterfaceHistoryTimes();
	
	/**
	 * 获取所有接口信息业务层接口
	 * 
	 * @return List<Interfaces> 接口信息列表
	 */
	List<Interfaces> getAll();
	
	/**
	 * 接口测试业务层接口
	 * 
	 * @param interfacesTestRequest 接口测试请求参数
	 * @return String 接口返回信息
	 */
	String interfacesTest(InterfacesTestRequest interfacesTestRequest);

}
